package com.jhonatan.sitcom;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.jhonatan.adapter.AdapterDespachos;
import com.jhonatan.sitcom.beans.Despacho;
import com.jhonatan.sitcom.util.DataBaseManager;
import com.jhonatan.sitcom.util.Global;
import com.jhonatan.sitcom.util.JSONParser;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;



/**
 * Activity que muestra un ListView de los vehiculos que saldran a mision
 * 
 * @authorJhonatan Flores than92@hotmail.es
 * 
 */
public class DespachoList extends ListActivity  {
	private Activity act;
	private static String url;
	private ArrayList<Despacho> despachos = new ArrayList<Despacho>();
	ListView lv;
	private Context context;
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.despacho_list);
		ListView lv = (ListView)findViewById(android.R.id.list);
		context=this;
		new  GetJSONActivity(DespachoList.this).execute();	
		
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
         @Override
         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
             
        	 Intent intent  = new Intent(DespachoList.this,Chekeo.class);
             Bundle bundle = new Bundle();
             bundle.putLong(Despacho.TAG_ID,despachos.get(position).getId_mision() );
             bundle.putString(Despacho.TAG_PLACA, despachos.get(position).getPlaca());
             bundle.putString(Despacho.TAG_NOMBRE, despachos.get(position).getEmpleado());
             bundle.putString(Despacho.TAG_ENTRADA, despachos.get(position).getEntrada());
             bundle.putString(Despacho.TAG_SALIDA, despachos.get(position).getSalida());
             bundle.putInt(Despacho.TAG_ESTADO, despachos.get(position).getEstado());
             
             System.out.println("--###>Enviando Parametros----------");
             intent.putExtras(bundle);
             startActivity(intent);
             finish(); 
             
         }
     });
		
	}

	public class GetJSONActivity extends AsyncTask<String, Integer, Boolean> {
		
		public GetJSONActivity(Activity activity){
						
			act= activity;
		}
		protected void onPreExecute() {
			url= new Global().getBaseUrl() +"index.php/android/lista/";
		
		}
		
		@Override
		protected Boolean doInBackground(String... params) {
			DataBaseManager manager = new DataBaseManager(context);
			Cursor cr =manager.leer("id_usuario");
			@SuppressWarnings("static-access")
			int inValue= cr.getColumnIndex(manager.CN_VALUE);
     		cr.moveToLast();  
     		String valor = cr.getString(inValue);
			url=url+valor;
			System.out.println("--###> Comenzando Segundo Hilo---------------"+url);	// TODO Auto-generated method stub
			JSONParser jParser = new JSONParser();
			JSONArray json;
			try{
	
					json = jParser.getJSONfromURL(url);
			
			
			
			System.out.println("--###>Conversion a Object Comenzando---------------"+json.length());	
			for(int i=0; i<json.length();i++){
				
				try {
					//Extracion dato por dato
				JSONObject c= json.getJSONObject(i);
				Despacho desp = new Despacho(); 
				
				desp.setEmpleado(c.getString(Despacho.TAG_NOMBRE));
				desp.setPlaca(c.getString(Despacho.TAG_PLACA));	
				desp.setId_mision(c.getLong(Despacho.TAG_ID));
				desp.setEntrada(c.getString(Despacho.TAG_ENTRADA));
				desp.setSalida(c.getString(Despacho.TAG_SALIDA));
				desp.setEstado(c.getInt(Despacho.TAG_ESTADO));
	

				despachos.add(desp);
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();					
				}				
			}
			
			System.out.println("--###>Conversion a Oject Ok---------------");
			
			}catch(Exception e){
				System.out.println("--###>Sin datos---------------");
			
			}
			return true;
			
		}
		
		 protected void onPostExecute(Boolean result) {
				System.out.println("--###>Configurando Lista---------------");	
	            	
	            	try{
	        ListAdapter adapter = new AdapterDespachos(act, despachos);  
	        setListAdapter(adapter);
	       	getListView();               
	        Toast.makeText(DespachoList.this, "Listo!",
	                Toast.LENGTH_SHORT).show();
	    	//verificacion de que hay datos
	        TextView lbMensaje1 = (TextView) findViewById(R.id.mensaje_lista);
	        		
	        		if(despachos.size()==0){ //cuando no hay datos que mostrar debe de 
	        								//haber un mensaje en la pantalla que informe al usuario	        			 
	        		        lbMensaje1.setText("No hay datos que mostrar");
	        		}else{
	        				lbMensaje1.setText(" ");
	        		} 
	        		
	            	}catch(Exception ex){

	                    Toast.makeText(DespachoList.this, "Error al cargar!",
	                            Toast.LENGTH_SHORT).show();                	
	                	
	                }
	            }
	}
    public boolean onCreateOptionsMenu(Menu menu) 
    {
    	Global global =new Global();
    	return global.onCreateOptionsMenu(menu, this);
       
    }
    
    public boolean onOptionsItemSelected(MenuItem item) 
    {
    	Global global =new Global();
    	return global.onOptionsItemSelected(item, this);
               
    }

}
